<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>代理模式</title>
</head>
<body>

<div>当客户不方便直接访问一个 对象或者不满足需要的时候，提供一个替身对象 来控制对这个对象的访问，客户实际上访问的是 替身对象。</div>
<div>替身对象对请求做出一些处理之后， 再把请求转交给本体对象</div>
<div>代理和本体的接口具有一致性，本体定义了关键功能，而代理是提供或拒绝对它的访问，或者在访问本体之前做一 些额外的事情</div>
<div>代理模式主要有三种：保护代理、虚拟代理、缓存代理</div>
<script>
// 主体,发送消息
function sendMsg(msg) {
    console.log(msg);
}

// 代理,对消息进行过滤,保护代理
function proxySendMsg(msg) {
    // 有消息则进行过滤
    msg = ('' + msg).replace(/你妹/g, '');

    sendMsg(msg);
}


sendMsg('你妹呀'); //你妹呀
proxySendMsg('你妹呀'); // 呀
</script>
</body>
</html>